---
title: StageExportPng 导出PNG
icon: Image
relatedFile: app/src/core/service/dataGenerateService/stageExportEngine/StageExportPng.tsx
---

这个服务主要负责将应用程序的舞台内容导出为PNG图片。它提供了精细的控制，允许用户调整导出时的相机缩放比例以及是否包含背景。

## 导出流程

服务通过以下步骤完成舞台内容的导出：
*   **准备画布**: 创建一个临时的HTML Canvas元素，并根据舞台的尺寸和导出参数（如缩放因子和内边距）设置其大小。
*   **分块渲染**: 由于舞台内容可能很大，服务会将其分割成多个视图区域。它会逐一移动相机到这些区域，捕获当前视图的图像数据，并将其绘制到临时的导出画布上。这个过程会暂停以确保渲染完成。
*   **参数管理**: 在导出前后，服务会保存并恢复当前的相机位置、缩放以及背景显示设置，以确保导出操作不会影响用户当前的视图状态。
*   **生成图片**: 最终，将临时画布的内容转换为PNG格式的Base64编码字符串，并创建一个`<img>`元素来显示或处理这张图片。

## API

### `changeCameraScaleWhenExport(scale: number)`

用于设置导出时相机的缩放因子。这个值决定了导出图片中舞台内容的放大或缩小程度。

### `setHaveBackground(have: boolean)`

用于控制导出图片是否包含舞台的背景。如果设置为`true`，则背景（如网格、点）会一同导出。

### `exportStage()`

启动舞台内容的PNG导出过程。此方法会协调所有内部步骤，包括准备、渲染、以及导出后恢复原始视图设置。
